// 角度转弧度
import 'dart:math';

// 角度转弧度
double degreesToRadians(double degrees) {
  return degrees * (pi / 180);
}

// 弧度转角度
double radiansToDegrees(double radians) {
  return radians * (180 / pi);
}

// 角度去除周期
double degreesTransfer(double degrees) {
  return degrees % 360;
}

String degreesTransToShow(double degrees) {
  int degreesInt = degrees.toInt(); // 度数部分
  double minutes = ((degrees - degreesInt) * 60); // 分数部分
  int minutesInt = minutes.toInt(); // 取整数部分作为分钟数
  double seconds = (minutes - minutesInt) * 60; // 秒数部分
  int secondsInt = seconds.toInt(); // 取整数部分作为秒数
  return '$degreesInt°$minutesInt′$secondsInt″';
}

// 磁力计数值转角度
double azimuthTransfer(double x, y) {
  // 成都 2.36
  // const declination = 2.36;
  return (atan2(y, x) * 180 / pi + 270) % 360;
}

double roundToNearest(double value, int precision) {
  num multiple = pow(10, precision);
  return (value * multiple).round() / multiple;
}

num abs(num n) {
  if (n < 0) {
    return -n;
  }
  return n;
}
